home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / BORLAND TURBO / OCFINC.PAK / DEFS.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  6KB  |  184 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectComponents
  3. // Copyright (c) 1994, 1997 by Borland International, All Rights Reserved
  4. //
  5. // $Revision:   2.9  $
  6. //
  7. // ObjectComponents fundamental definitions
  8. //----------------------------------------------------------------------------
  9. #if !defined(OCF_DEFS_H)
  10. #define OCF_DEFS_H
  11.  
  12. #if defined(BI_NAMESPACE)
  13. namespace OCF {
  14. #endif
  15.  
  16. //
  17. // We must use all libraries as DLLs if we are using OCF as a DLL
  18. //
  19. // Define _OCFDLL with -WSE (-WE for 32bit) to use BIDS & RTL in dlls.
  20. //
  21. // Be sure _BUILDOCFDLL is defined when building an actual OCF dll
  22. //
  23. #if defined(_OCFDLL) || defined(_BUILDOCFDLL)
  24. # if !defined(_OCFDLL)
  25. #   define _OCFDLL
  26. # endif
  27. # if !defined(_WSYSDLL)
  28. #   define _WSYSDLL
  29. # endif
  30. # if !defined(_BIDSDLL)
  31. #   define _BIDSDLL
  32. # endif
  33. # if !defined(_SVCSDLL)
  34. #   define _SVCSDLL
  35. # endif
  36. # if !defined(_RTLDLL)
  37. #   define _RTLDLL
  38. # endif
  39. #endif
  40.  
  41. #if defined(BI_NAMESPACE)
  42. } // namespace OCF
  43. using namespace OCF;
  44. #endif
  45.  
  46. //----------------------------------------------------------------------------
  47. // Get core Classlib and Winsys header for supporting defines
  48. //
  49.  
  50. #define INC_OLE2  // make sure windows.h (via defs.h) gets ole2, not ole1
  51.  
  52. #if !defined(WINSYS_DEFS_H)
  53. # include <winsys/defs.h>
  54. #endif
  55. #if !defined(WINSYS_WSYSINC_H)
  56. # include <winsys/wsysinc.h>
  57. #endif
  58. #if !defined(SERVICES_CSTRING_H)
  59. # include <services/cstring.h>     // string class
  60. #endif
  61. #if !defined(SERVICES_CHECKS_H)
  62. # include <services/checks.h> // diag macros (PRECONDITION, CHECK, WARN, TRACE)
  63. #endif
  64. #if !defined(WINSYS_EXBASE_H)
  65. # include <winsys/exbase.h>
  66. #endif
  67.  
  68. //----------------------------------------------------------------------------
  69. // Setup class, function and data modifier macros for OCF
  70. //
  71.  
  72. #if defined(BI_NAMESPACE)
  73. namespace OCF {
  74. #endif
  75.  
  76. #if defined(BI_COMP_MSC)
  77. # define __export      __declspec(dllexport)
  78. # define __import      __declspec(dllimport)
  79. #endif
  80. #if defined(_FASTTHIS) && !defined(BI_PTR_0_32)
  81. # define _OCFFASTTHIS  __fastthis
  82. #else
  83. # define _OCFFASTTHIS
  84. #endif
  85. #if defined(_BUILDOCFDLL)
  86. # define _OCFCLASS     __export _OCFFASTTHIS
  87. # define _OCFDATA      __export
  88. # define _OCFFUNC      __export
  89. #elif defined(_OCFDLL)
  90. # define _OCFCLASS     __import _OCFFASTTHIS
  91. # if defined(BI_PTR_0_32)
  92. #   define _OCFDATA    __import
  93. #   define _OCFFUNC    __import
  94. # else
  95. #   define _OCFDATA
  96. #   define _OCFFUNC
  97. # endif
  98. #else
  99. # if defined(BI_PTR_0_32)
  100. #   define _OCFCLASS
  101. # else
  102. #   define _OCFCLASS   __huge _OCFFASTTHIS  // _ICLASS
  103. # endif
  104. # define _OCFDATA
  105. # define _OCFFUNC
  106. #endif
  107.  
  108. //
  109. // Useful HRESULT constants and test functions
  110. //
  111. #define HR_NOERROR             NOERROR
  112. #define HR_OK                  ResultFromScode(S_OK)  // same as NOERROR
  113. #define HR_FALSE               ResultFromScode(S_FALSE)
  114. #define HR_NOTIMPL             ResultFromScode(E_NOTIMPL)
  115. #define HR_OUTOFMEMORY         ResultFromScode(E_OUTOFMEMORY)
  116. #define HR_INVALIDARG          ResultFromScode(E_INVALIDARG)
  117. #define HR_NOINTERFACE         ResultFromScode(E_NOINTERFACE)
  118. #define HR_POINTER             ResultFromScode(E_POINTER)
  119. #define HR_HANDLE              ResultFromScode(E_HANDLE)
  120. #define HR_ABORT               ResultFromScode(E_ABORT)
  121. #define HR_FAIL                ResultFromScode(E_FAIL)
  122.  
  123. #define HR_CLASS_NOAGGREGATION ResultFromScode(CLASS_E_NOAGGREGATION)
  124. #define HR_CLASS_CLASSNOTAVAILABLE ResultFromScode(CLASS_E_CLASSNOTAVAILABLE)
  125.  
  126. #define HR_DISP_MEMBERNOTFOUND ResultFromScode(DISP_E_MEMBERNOTFOUND)
  127. #define HR_DISP_BADPARAMCOUNT  ResultFromScode(DISP_E_BADPARAMCOUNT)
  128. #define HR_DISP_BADVARTYPE     ResultFromScode(DISP_E_BADVARTYPE)
  129. #define HR_DISP_OVERFLOW       ResultFromScode(DISP_E_OVERFLOW)
  130. #define HR_DISP_TYPEMISMATCH   ResultFromScode(DISP_E_TYPEMISMATCH)
  131. #define HR_DISP_PARAMNOTFOUND  ResultFromScode(DISP_E_PARAMNOTFOUND)
  132. #define HR_DISP_PARAMNOTOPTIONAL ResultFromScode(DISP_E_PARAMNOTOPTIONAL)
  133. #define HR_DISP_EXCEPTION      ResultFromScode(DISP_E_EXCEPTION)
  134. #define HR_DISP_OVERFLOW       ResultFromScode(DISP_E_OVERFLOW)
  135. #define HR_DISP_UNKNOWNINTERFACE ResultFromScode(DISP_E_UNKNOWNINTERFACE)
  136. #define HR_DISP_UNKNOWNNAME    ResultFromScode(DISP_E_UNKNOWNNAME)
  137.  
  138. #define HR_TYPE_INVALIDSTATE   ResultFromScode(TYPE_E_INVALIDSTATE)
  139. #define HR_TYPE_WRONGTYPEKIND  ResultFromScode(TYPE_E_WRONGTYPEKIND)
  140. #define HR_TYPE_LIBNOTREGISTERED ResultFromScode(TYPE_E_LIBNOTREGISTERED)
  141. #define HR_TYPE_ELEMENTNOTFOUND ResultFromScode(TYPE_E_ELEMENTNOTFOUND)
  142. #define HR_TYPE_UNSUPFORMAT    ResultFromScode(TYPE_E_UNSUPFORMAT)
  143.  
  144. #define HR_DATA_FORMATETC      ResultFromScode(DATA_E_FORMATETC)
  145. #define HR_DV_FORMATETC        ResultFromScode(DV_E_FORMATETC)
  146. #define HR_DATA_SAMEFORMATETC  ResultFromScode(DATA_S_SAMEFORMATETC)
  147.  
  148. #define HR_MK_NOOBJECT         ResultFromScode(MK_E_NOOBJECT)
  149. #define HR_MK_NOSTORAGE        ResultFromScode(MK_E_NOSTORAGE)
  150. #define HR_MK_UNAVAILABLE      ResultFromScode(MK_E_UNAVAILABLE)
  151.  
  152. #define HR_OLE_STATIC          ResultFromScode(OLE_E_STATIC)
  153. #define HR_OLE_NOT_INPLACEACTIVE ResultFromScode(OLE_E_NOT_INPLACEACTIVE)
  154. #define HR_OLEOBJ_INVALIDVERB  ResultFromScode(OLEOBJ_S_INVALIDVERB)
  155. #define HR_OLE_USEREG          ResultFromScode(OLE_S_USEREG)
  156.  
  157. #define HR_RPC_CALL_REJECTED   ResultFromScode(RPC_E_CALL_REJECTED)
  158. #define HR_STG_CANTSAVE        ResultFromScode(STG_E_CANTSAVE)
  159.  
  160. // Return result codes based on bool expression
  161. //
  162. inline HRESULT HRFailIfZero(int bexpr) {return bexpr ? HR_NOERROR : HR_FAIL;}
  163. inline HRESULT HRFalseIfZero(int bexpr) {return bexpr ? HR_OK : HR_FALSE;}
  164.  
  165. // Return bool based on hresult test
  166. //
  167. inline bool HRSucceeded(HRESULT hr) {return static_cast<bool>((SCODE)hr >= 0);}
  168. inline bool HRIsOK(HRESULT hr) {return static_cast<bool>(hr == HR_OK);}
  169.  
  170. #if defined(BI_NAMESPACE)
  171. } // namespace OCF
  172. using namespace OCF;
  173. #endif
  174.  
  175. #if defined(BI_NAMESPACE)
  176. # define NS_CLASSLIB ClassLib
  177. # define NS_OCF OCF
  178. #else
  179. # define NS_CLASSLIB
  180. # define NS_OCF
  181. #endif
  182.  
  183. #endif  // OCF_DEFS_H
  184.